#pragma once
#include <memory>
#include <string>

#include "ft2build.h"
#include FT_FREETYPE_H

#include <boost/smart_ptr/shared_ptr.hpp>
#include <boost/function.hpp>

namespace TrueText {

class Stream;
struct FaceId;

class FaceImpl
{
public:
	FaceImpl(std::string id, boost::function<boost::shared_ptr<Stream> ()> data);
	FaceImpl(const FaceImpl& rhs);
	~FaceImpl();
	const FaceImpl& operator=(const FaceImpl& rhs);

	std::string GetFamilyName() const;
	std::string GetStyleName() const;

	FT_Face getFace() const 
	{
		return face;
	}

	FaceId* getFaceId() const
	{
		return id;
	}
private:
	FaceId* id;
	FT_Face face;
};

};